package middleware

import (
	"github.com/gin-gonic/gin"
	"github.com/google/uuid"
)

// RequestIDMiddleware 为每个请求生成一个唯一的 request ID
func RequestIDMiddleware() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 尝试从请求头获取 X-Request-ID
		requestID := c.Request.Header.Get("X-Request-ID")

		// 如果请求头中没有，则生成一个新的 UUID
		if requestID == "" {
			requestID = uuid.New().String()
		}

		// 将 request ID 设置到 Gin Context 中，方便后续处理函数使用
		c.Set("X-Request-ID", requestID)

		// 将 request ID 设置到响应头中
		c.Header("X-Request-ID", requestID)

		// 继续处理请求
		c.Next()
	}
}
